const { extractVerificationCode } = require('../utils/utils.js');//引用工具类

/**
 * 获取验证码
 * @param {*} page 页面对象
 * @param {*} emailIndex 邮件索引，默认为1
 */
const getVerificationCode = async (page, emailIndex = 1) => {
    let verificationCode = null; // 改为 let 允许重新赋值
    await page.goto('https://mail.google.com', { timeout: 120000 });
    const emailList0 = await page.locator('.Cp > div > table > tbody > tr').all();
    if (emailList0.length <= 0) {
        await page.getByRole('textbox', { name: '电子邮件地址或电话号码' }).fill('wangchaojin199605@gmail.com');
        await page.getByRole('button', { name: '下一步' }).click();
        await page.getByRole('textbox', { name: '输入您的密码' }).fill('Wcj877099858');
        await page.getByRole('button', { name: '下一步' }).click();
        await page.waitForTimeout(20000);
        // 可能会出现辅助验证的弹窗，需要处理
        const helpPhonNumberField = await page.getByRole('link', { name: '确认您的辅助电话号码' }).all();
        if (helpPhonNumberField.length > 0) {
            await helpPhonNumberField.click();
            await page.locator('.VfPpkd-aPP78e').click();
            await page.getByLabel('选择国家/地区').getByText('中国 (+86)').click();
            await page.getByRole('textbox', { name: '输入电话号码' }).click();
            await page.getByRole('textbox', { name: '输入电话号码' }).fill('152 2415 5575');
            await page.getByRole('button', { name: '下一步' }).click();
        }
    }
    await page.waitForTimeout(10000); // 添加 await 等待超时
    const emailList = await page.locator('.Cp > div > table > tbody > tr').all();
    for (const email of emailList) { // 使用 for...of 替代 forEach
        await email.click();
        await page.waitForTimeout(1000);
        const emaiContent1 = await page.locator('.gmail_quote > div:nth-child(4)').all();
        if (emaiContent1.length > 0) {
            for (const item of emaiContent1) { // 使用 for...of 替代 forEach
                verificationCode = await extractVerificationCode(await item.textContent());
                console.log(verificationCode);
                if (verificationCode) { // 找到验证码后直接返回
                    await page.goBack();
                    return verificationCode;
                }
            }
        } else {
            const emaiContent2 = await page.getByText('fw---------- Forwarded').all();
            if (emaiContent2.length > 0) {
                for (const item of emaiContent2) { // 使用 for...of 替代 forEach
                    verificationCode = await extractVerificationCode(await item.textContent());
                    console.log(verificationCode);
                    if (verificationCode) { // 找到验证码后直接返回
                        await page.goBack();
                        return verificationCode;
                    }
                }
            } else {
                await page.goBack();
                continue;
            }
        }
        await page.goBack();
    }
    return verificationCode; // 未找到验证码时返回 null
};

module.exports = { getVerificationCode };